昨天看Laravel的原始程式碼提醒了我的回憶,就是有一個老師跟我說看程式碼很重要,如果能夠看好的程式碼,例如很多好的開源項目,那麼你可以從高手身上學習他們的知識精華,可以不只是會動的程式碼,而能擁有可維護有效率可擴展等等優點。
但是鑑賞這件事是需要有知識來支持的,就像學音樂的人可以立刻聽出演奏的高低,但是一般人都覺得差不多一樣,原因在於學音樂的人有相關的知識。像我ㄧ樣的程式新手而言,一起始看程式碼或是官方文件只是為了了解如何讓你的程式可以正確運作,但是當程式變得越來越複雜的時候,你會開始開始考慮到可維護有效率可擴展等因素,因為軟體的要求很常改變,但是這些改變需要工程師去實施,如果無法寫出可以理解好擴展的程式碼,往往會造成很難改動的狀況。
我目前還在學習幫助我能更理解程式碼或寫出更好程式碼的方法,但是看過一些書跟演講後再搭配自己練習的經驗,我會希望從幾個層面讀Laravel程式碼:
軟體開發原則:SOLID
SOLID分別為:
(1) Single Responsibility Principle
(2) Open/Closed Principle
(3) Liskov Substitution Principle
(4) Interface Segregation Principle
(5) Dependency Inversion Principle
搞笑談軟工提到:它們在談「面對原始碼改變的五種不同策略」C或是說「從五種不同的角度,來應付、管理原始碼改變」。
設計模式
設計模式是GoF四位作者提出在軟體界為了針對各種具體問題而出現的23種設計模式。透過學習設計模式,不只是可以學習別人的設計,更可以學到如何觀察問題、設計過程和物件導向的更高層次的視角,得以封裝變化等等,而這個視角可以讓我去觀察Laravel中採用的許多設計模式,如Factory/Provider/Strategy等等。
測試
在重構這本書中很強調寫測試對重構的重要,因為有測試才能夠避免在重構程式碼的過程中造成破壞,Laravel官方文件提供很多測試的方法讓開發者可以更輕鬆地進行測試。
總結,我應該會以如何因應變化來持續探討Laravel的程式碼。
接下來是關於前端的部分,要來介紹Tailwind CSS。
參考文件:
Becoming a better developer by using the SOLID design principles by Katerina Trajchevska
Colin Decarlo - Design Patterns with Laravel
Laravel Design Patterns - Bobby Bouwmann - Laracon EU 2018 Amsterdam
SOLID:五則皆變